package domain.controller;

import data_source.DAO.jdbc.PacienteDAO;
import domain.pojo.Paciente;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.DefaultException;

/**
 * Classe de manipulação de dados do paciente, atualmente faz a interface entre 
 * a apresentação e o banco de dados
 * @author Owner
 */
public class PacienteController {
    PacienteDAO modelo = null;
   
    /**
     * Construtor que inicia o DAO do paciente
     */
    /**
     * Construtor
     */
    public PacienteController(){
	modelo = new PacienteDAO();
    }
    

    /**
     * Pega quantidade de itens na tabela pacientes
     * @return quantidade
     */

    public int getQuantidade(){
	return modelo.getQuantidade();
    }
    

    /**
     * Pega informações de vários pacientes do BD
     * @param quantidade quantidade de linhas na tabela
     * @return objeto contendo informações de vários pacientes
     */

    public Object[][] getDados(int quantidade){
	return modelo.getDados(quantidade);
    }
    
    /**
     * Pega os nomes dos pacientes
     * @return vetor de pacientes
     */

    public String[] getNomes(){
	return modelo.getNomePacientes();
    }
    
    /**
     * Exclui paciente do BD
     * @param id id do paciente a ser excluído
     */
    public void excluir(int id){
	try {
	    modelo.excluir(id);
	} catch (DefaultException ex) {
	    Logger.getLogger(PacienteController.class.getName()).log(Level.SEVERE, null, ex);
	}
    }
    
    /**
     * Atualiza paciente no BD
     * @param paciente paciente a ser atualizado
     */
    public void atualizar(Paciente paciente){
	try {
	    modelo.atualizar(paciente);
	} catch (DefaultException ex) {
	    Logger.getLogger(PacienteController.class.getName()).log(Level.SEVERE, null, ex);
	}
    }
    
    /**
     * Insere um paciente no BD
     * @param paciente paciente a ser inserido
     */
    public void incluir(Paciente paciente){
	try {
	    modelo.incluir(paciente);
	} catch (DefaultException ex) {
	    Logger.getLogger(PacienteController.class.getName()).log(Level.SEVERE, null, ex);
	}
    }
    

    /**
     * Pega o id a partir de um nome
     * @param nome nome do paciente
     * @return id do paciente
     */
    public int getIdFromNome(String nome){
	return modelo.getIdNome(nome);
    }
    
    public String getNomeFromId(int id){
	return modelo.getNomeFromID(String.valueOf(id));
    }
}
